iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0

昨天我們介紹了 Dockerfile 中常用的 Instructions ,今天,就讓我們來上手這些指令,並實際建置出一個 間單的Nginx 服務頁面吧!

NGINX

首先,讓我們先回想之前架出一個網站需要的步驟有哪些:

  1. 將 Nginx 安裝在作業系統
  2. 利用 nginx.conf 配置 NGINX
  3. 將網站內容移到NGINX 指定的目錄下

將之前的服務建置過程,轉換到 Docker ,會成為這樣:

  1. NGINX:服務的核心映像
  2. nginx.conf:NGINX 的Config 檔案
  3. 網站內容
  4. 將宿主的port轉發到 Container 的 port

Dockerfile 的第一行,顯而易見的為 FROM nginx,從 Docker 的 Registry 抓取 NGINX 的映像檔作為我們的 Parent Image
假設我們的 nginx.conf 已存在我們的宿主的文件目錄中,抓完 nginx 後的第二步驟,就是要想辦法把我們的文件,移到 docker 裡:

Copy 東西到docker 裡

COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY index.html /usr/share/nginx/html

合在一起變成這樣:

FROM nginx
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY index.html /usr/share/nginx/html

最後則是編譯映像檔的部分:利用終端機進入到包含 dockerfile、index.html、和nginx.conf的資料夾
接著下指令:

docker build -t iron2022 .
  • docker build: 為建置映像的指令
  • -t :自訂映像的名稱和版本,若無版本會以 lastest 做為預設值
  • . :為 dockerfile 的路徑

若沒有跳錯,就可啟動容器了

docker run --name iron2022 -p 8080:80 -d iron2022
  • docker run
  • --name:可指定 container 的名字
  • -p:轉發通訊埠,Host:Container,前者為宿主的實體 port,後者為 container 的虛擬 port
    • -d:指定映像,在上一步已將映像命名為 iron2022,因此這邊也一樣是 iron2022

執行完之後,打開瀏覽器輸入 localhost:8080,就可以看到我們建立的網站了!

nginx.conf、index.html 範例

server{

listen 80 default_server;

listen [::]:80 default_server;

server_name localhost;

root /usr/share/nginx/html;

index index.html;

charset utf-8;

access_log /var/log/nginx/access_log;

error_log /var/log/nginx/error_log;

}
<!--index.html -->
<!DOCTYPE html>  
<html>  
	<head>  
	  <meta charset="UTF-8">  
		  <title>nginx in docker</title>  
	</head>
	<body>  
		Hello Docker!  
	</body>
</html>

上一篇
Dockerfile
下一篇
DockerFile-3 Recap getting-started
系列文
從認識Docker到精通30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言